

package com.hexinfo.dmpro.script.publish.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.validation.annotation.Validated;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 脚本发布任务
 *
 * @author Wang zhihao
 * @date 2023-09-13 18:16:07
 */
@Data
@Validated
@TableName("TD_SCRIPT_PUBLISH_TASK")
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value = "脚本发布任务")
public class ScriptPublishTaskEntity extends Model<ScriptPublishTaskEntity> {
private static final long serialVersionUID = 1L;

    /**
     * 脚本发布任务ID
     */
    @TableId(type= IdType.ASSIGN_UUID)
    @ApiModelProperty(value="脚本发布任务ID")
    private String id;

    /**
     * 脚本发布版本ID
     */
    @ApiModelProperty(value="脚本发布版本ID")
    private String publishVersionId;

    /**
     * 脚本打包任务ID
     */
    @ApiModelProperty(value="脚本打包任务ID")
    private String packTaskId;

    /**
     * 脚本发布集群ID
     */
    @ApiModelProperty(value="脚本发布集群ID")
    private String publishClusterIds;

    /**
     * 脚本发布服务器ID
     */
    @ApiModelProperty(value="脚本发布服务器ID")
    private String serverIds;

    /**
     * 脚本发布集群名称
     */
    @ApiModelProperty(value="脚本发布集群名称")
    @TableField(exist = false)
    private String publishClusterNames;

    /**
     * 脚本发布集群ID列表
     */
    @ApiModelProperty(value="脚本发布集群ID列表")
    @TableField(exist = false)
    private List<String> publishClusterList;

    /**
     * 时间标识
     */
    @ApiModelProperty(value="时间标识")
    private String dateFlag;

    /**
     * 发布状态(已发布/发布中/未发布/已还原)
     */
    @ApiModelProperty(value="发布状态(已发布/发布中/未发布/已还原)")
    private String publishState;

    /**
     * 发布总数
     */
    @ApiModelProperty(value="发布总数")
    private Integer publishTotal;

    /**
     * 发布成功数
     */
    @ApiModelProperty(value="发布成功数")
    private Integer publishSuccess;

    /**
     * 发布失败数
     */
    @ApiModelProperty(value="发布失败数")
    private Integer publishFail;

    /**
     * 还原总数
     */
    @ApiModelProperty(value="还原总数")
    private Integer restoreTotal;

    /**
     * 还原成功数
     */
    @ApiModelProperty(value="还原成功数")
    private Integer restoreSuccess;

    /**
     * 还原失败数
     */
    @ApiModelProperty(value="还原失败数")
    private Integer restoreFail;

    /**
     * 总文件包路径
     */
    @ApiModelProperty(value="总文件包路径")
    private String masterPackagePath;

    /**
     * 发布权限
     */
    @ApiModelProperty(value="发布权限")
    private String publishUser;

    /**
     * 创建人
     */
    @ApiModelProperty(value="创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value="创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value="更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String lastUpdateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value="更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date lastUpdateTime;

    /**
     * 删除标识
     */
    @ApiModelProperty(value="删除标识")
    @TableField(fill = FieldFill.INSERT)
    private String del;

    public List<String> getPublishClusterList() {
        List<String> list = new ArrayList<>();
        if (publishClusterIds != null) {
            list.addAll(Arrays.stream(publishClusterIds.split(",")).collect(Collectors.toList()));
        }
        return list;
    }
}
